package presentation;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.util.Iterator;
import java.util.Locale;
import java.util.ResourceBundle;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.SoftBevelBorder;


import presentation.Ihm.EcranLogin;
import presentation.Ihm.ZoneCreationChampionnat;
import presentation.Ihm.ZoneGestionChampionnats;

public class ListenAjouterEquipes  implements ActionListener {
	private JComboBox maListeChampionnat;
	private String nomChampionnat;
	private JTextField monTextField;
	private JLabel monJLabel;
	private JPanel zoneEquipes;
	private JPanel zoneListe;
	public 		Locale local = Locale.getDefault();
	public 		ResourceBundle bundle = ResourceBundle.getBundle( "presentation/traduction", local);
	
	/**
	 * Constructeur de ListenCreationChampionnat
	 * @param JComboBox listeChampionnats : la comboBox qui contient la liste des championnats
	 */
	public ListenAjouterEquipes(JComboBox listeChampionnats) {
		maListeChampionnat = listeChampionnats;
	}
	/**
	 * Constructeur de ListenAjouterEquipes
	 * @param String nom : le nom du championnat courant
	 * @param JTextField textField : Le champ texte qui contient le nom de l'quipe  crer
	 * @param JLabel labelEquipe : Le label  remplir avec le nom de la nouvelle quipe
	 * @param JPanel zone : Le JPanel de cration des quipes
	 * @param JPanel zoneListe : Le JPanel de liste des quipes
	 */
	public ListenAjouterEquipes(String nom,JTextField textField,JLabel labelEquipe,JPanel zone,JPanel zoneListe){
		this.nomChampionnat = nom;
		this.monTextField = textField;
		this.monJLabel = labelEquipe;
		this.zoneEquipes = zone;
		this.zoneListe = zoneListe;
	}
	/**
	 * Mthode implment par ActionListener
	 * On rcupre le texte saisi dans le textfield
	 * On cre un objet Equipe via l'interface EquipeInterface
	 * On insre cette quipe dans la base
	 * On vrifie que l'quipe n'existe pas dj
	 * Enfin, on rafraichit l'affichage
	 * @param ActionEvent evt
	 */
	public void actionPerformed(ActionEvent evt){
		if (evt.getSource() instanceof JButton) {
			JButton src_button = (JButton)evt.getSource();
			//Cration equipes
			if (src_button.getText() == bundle.getString("ajouter_equipes")){
				String nomChampionnat = maListeChampionnat.getSelectedItem().toString();
				IhmGestionEquipes ihmEquipes = new IhmGestionEquipes(nomChampionnat);
				ihmEquipes.lancementEcranEquipes();
			}
			if ((src_button.getText() == bundle.getString("creer_equipes")) || (src_button.getText() == bundle.getString("refresh_team"))){
				String nom_equipe = this.monTextField.getText();
				this.monTextField.setText("");
				try {
					ChampionnatInterface championnatClient = (ChampionnatInterface) Naming.lookup("Championnat");
					championnatClient.findChampionnat(nomChampionnat);
					
					EquipeInterface equipeClient = (EquipeInterface) Naming.lookup("Equipe");
					if (src_button.getText() == bundle.getString("creer_equipes")){
						int id_championnat = championnatClient.getId();
						boolean rep = equipeClient.createEquipe(id_championnat,nom_equipe);
						if (!(rep)){
						   JOptionPane.showMessageDialog(null,"L'quipe "+nom_equipe+" existe dj. Vous ne pouvez pas insrer deux quipes avec des noms identiques.", "Equipe dj insre",JOptionPane.CLOSED_OPTION);
						} else {
							monJLabel.setText("Nom Equipe : " + nom_equipe);
							monJLabel.setVisible(true);
						}
					}
					JLabel nouveauLabel = monJLabel;
					zoneListe.removeAll();
					
					for(Iterator i = championnatClient.getListeEquipes().iterator(); i.hasNext();){
						EquipeInterface e = (EquipeInterface) i.next();
						JLabel labelEquipeDynamique = new JLabel("Nom Equipe : "+e.getNom());
						System.out.println(e.getNom());
						System.out.println("nnnn");
						labelEquipeDynamique.setSize(450,50);
						SoftBevelBorder cadre = new SoftBevelBorder(SoftBevelBorder.LOWERED);
						labelEquipeDynamique.setBorder(cadre);
						labelEquipeDynamique.setPreferredSize(new Dimension(450,25));
						zoneListe.add(labelEquipeDynamique);
					} 
					nouveauLabel.setSize(450,50);
					
				} catch (MalformedURLException e) {
					e.printStackTrace();
				} catch (RemoteException e) {
					e.printStackTrace();
				} catch (NotBoundException e) {
					e.printStackTrace();
				}
			}
		}
	}
}
